package setZeros;

import java.util.Arrays;

/**
 * @Date 2020/03/27
 * @author 王光浩 
 * @Thinking 使用使用两个数组来保存行和列的情况，当对应值为0时表明这一行或这一列需要全部更变为0。
 * @Analysis 时间复杂度O（m*n），空间复杂度O（m+n）
 */
public class MyMethodOne {
	public void setZeroes(int[][] matrix) {
		int[] row=new int[matrix.length];      //保存行的情况 
		int[] column=new int[matrix[0].length]; //保存列的情况
		Arrays.fill(row, 1);
		Arrays.fill(column, 1);
		for(int i=0;i<matrix.length;i++) {
			for(int j=0;j<matrix[0].length;j++) {
				if(matrix[i][j]==0) {
					row[i]=0;
					column[j]=0;
				}
			}
		}
		//将所有行置为0
		for(int i=0;i<row.length;i++) {
			if(row[i]!=0)continue;
			for(int j=0;j<matrix[0].length;j++)
				matrix[i][j]=0;
		}
		//将所有列置为0
		for(int i=0;i<column.length;i++) {
			if(column[i]!=0)continue;
			for(int j=0;j<matrix.length;j++)
				matrix[j][i]=0;
		}
    }
}
